#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<wait.h>
#include<sys/types.h>
//int main()
//{
//  pid_t id =  fork();
//  if(id==0)//child
//  {
//    while(1)
//    {
//      printf("I am child process %d...\n",getpid());
//      sleep(1);
//    }
//  }
//  else if(id>0)
//  {
//    while(1)
//    {
//      printf("I am parent process %d...\n",getpid());
//      sleep(1);
//    }
//  }
//  else 
//  {
//
//  }
//  return 0;
//}


//int main()
//{
//
//  printf("I am running...\n");
//
//  pid_t id = fork();
//  if(id==0)
//  {
//    int count=5;
//    while(count)
//    {
//
//      printf("I am child...PID:%d,PPID:%d,count:%d\n",getpid(),getppid(),count);
//      sleep(1);
//      count--;
//    }
//    printf("child quit...\n");
//    exit(1);
//  }
//
//  else if(id>0)
//  {
//      while(1)
//      {
//        printf("I am father...PID:%d,PPID:%d\n",getpid(),getppid());
//        sleep(1);
//      }
//
//  }
//  else 
//  {
//
//
//  }
//  return 0;
//}

//int main()
//{
//
//   printf("I am running....\n");
//   pid_t id = fork();
//   if(id==0)
//   {
//     while(1)
//     {
//     printf("I am child....PID:%d,PPID:%d...\n",getpid(),getppid());
//     sleep(1);
//     }
//   }
//
//   else if(id>0)
//   {
//     int count=5;
//     while(count)
//     {
//       printf("I am father...PID:%d,count:%d...\n",getpid(),count);
//       count--;
//       sleep(1);
//     }
//     printf("father exit....");
//     exit(1);
//   }
//   else 
//   {
//
//
//   }
//
//  return 0;
//}
//

//int main()
//{
//
//  pid_t id=fork();
//
//  if(id==0)
//  {
//    int count=10;
//    while(count)
//    {
//      printf("I am child...PID:%d,PPID:%d...\n",getpid(),getppid());
//      sleep(1);
//      count--;
//    }
//    exit(0);
//  }
//
//  int status=0;
//  pid_t ret=wait(&status);
//  if(ret>0)
//  {
//    printf("wait child success...\n");
//    if(WIFEXITED(status))
//    {
//      printf("exit code:%d\n",WEXITSTATUS(status));
//    }
//  }
//   
//  sleep(3);
//
//  return 0;
//}
//int main()
//{
//  pid_t ids[10];
//  for(int i=0;i<10;i++)
//  {
//    pid_t id=fork();
//    if(id==0)
//    {
//      printf("child process created successfully...PID:%d\n",getpid());
//      sleep(2);
//      exit(i);
//    }
//    ids[i]=id;
//
//  }
//
//  for(int i=0;i<10;i++)
//  {
//    int status=0;
//    pid_t ret=waitpid(ids[i],&status,0);
//    if(ret>=0)
//    {
//      printf("wait child success...PID:%d\n",ids[i]);
//      if(WIFEXITED(status))
//      {
//        printf("exit code:%d\n",WEXITSTATUS(status));
//      }
//      else 
//      {
//        printf("killed by signal %d\n",status&0x7f);
//      }
//    }
//  }
//  
//  return 0;
//}
//
//int main()
//{
//
//  pid_t id =fork();
//  if(id==0)
//  {
//    int count=3;
//    while(count)
//    {
//      printf("child do something...PID:%d,PPID:%d\n",getpid(),getppid());
//      sleep(2);
//      --count;
//    }
//    exit(0);
//  }
//  //father
//  while(1)
//  {
//    int status=0;
//    pid_t ret = waitpid(id,&status,WNOHANG);
//    if(ret>0)
//    {
//      printf("Wait child success...\n");
//      printf("Exit code:%d\n",WEXITSTATUS(status));
//      break;
//    }
//    else if(ret==0)
//    {
//      printf("father do something!....\n");
//      sleep(1);
//    }
//
//    else 
//    {
//      printf("wait erro!....\n");
//      break;
//    }
//
//
//  }
//
//  return 0;
//}
//
//进程程序替换

int main()
{
  pid_t id = fork();
  if(id==0)
  {
    execlp("ls","ls","-a",NULL);
    exit(1);
  }

  waitpid(id,NULL,WNOHANG);
  

  return 0;
}



